package com.xique.door.mapper;


import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.xique.door.bean.domain.ElevatorFault;
import com.xique.door.bean.vo.elevator.ElevatorFaultCountStatisticVO;
import com.xique.door.bean.vo.elevator.ElevatorFaultVO;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @author shd
 * @create 2021/10/14 9:04
 */
@Repository
public interface ElevatorFaultMapper extends BaseMapper<ElevatorFault> {

    /**
     * 查询故障集合
     *
     * @param id 故障集合ID
     * @return 故障集合
     */
    public ElevatorFault selectElevatorFaultById(Long id);

    /**
     * 获取最新的故障记录
     * @author shd
     * @date 2021/10/13 15:55
     * @param elvId
     * @return com.jzy.oms.community.elevator.bean.domain.ElevatorRun
     */
    ElevatorFault selectLastElevatorFaultByElvId(Long elvId);

    /**
     * 查询故障集合列表
     *
     * @param elevatorFault 故障集合
     * @return 故障集合集合
     */
    public List<ElevatorFault> selectElevatorFaultList(ElevatorFault elevatorFault);

    /**
     * 获取电动车报警提醒
     * @author shd
     * @date 2021/10/28 11:57
     * @return java.util.List<com.jzy.oms.community.elevator.bean.domain.ElevatorFault>
     */
    List<ElevatorFaultVO> selectElevatorLastElectromobileFaultList();

    /**
     * 新增故障集合
     *
     * @param elevatorFault 故障集合
     * @return 结果
     */
    public int insertElevatorFault(ElevatorFault elevatorFault);

    /**
     * 新增故障集合
     *
     * @param list 故障集合
     * @return 结果
     */
    int insertElevatorFaults(List<ElevatorFault> list);

    /**
     * 修改故障集合
     *
     * @param elevatorFault 故障集合
     * @return 结果
     */
    public int updateElevatorFault(ElevatorFault elevatorFault);

    /**
     * 删除故障集合
     *
     * @param id 故障集合ID
     * @return 结果
     */
    public int deleteElevatorFaultById(Long id);

    /**
     * 批量删除故障集合
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public int deleteElevatorFaultByIds(String[] ids);
    
    /**
     * 近30天故障统计
     * @author shd
     * @date 2021/10/21 9:07
     * @param elvId 
     * @return int
     */
    int selectElevatorFaultCountByElvIdInMonth(Long elvId);

    /**
     * 近30天故障统计
     * @author shd
     * @date 2021/10/21 9:07
     * @param list
     * @return int
     */
    List<ElevatorFaultCountStatisticVO> selectElevatorFaultCountsByElvIdsInMonth(List<Long> list);

    /**
     * 根据地区统计近30天故障
     * @author shd
     * @date 2021/10/25 11:25
     * @param code
     * @return java.util.List<com.jzy.web.elevator.bean.vo.ElevatorFaultVO>
     */
    List<ElevatorFaultVO>  selectElevatorFaultsByAddressCodeInMonth(Long code);

    /**
     * 根据小区统计近30天故障
     * @author shd
     * @date 2021/10/25 11:25
     * @param parkId
     * @return java.util.List<com.jzy.web.elevator.bean.vo.ElevatorFaultVO>
     */
    List<ElevatorFaultVO>  selectElevatorFaultsByParkIdInMonth(Long parkId);

    /**
     * 根据地区统计故障数
     * @author shd
     * @date 2021/10/27 8:58
     * @param code
     * @return java.lang.Long
     */
    Long selectElevatorFaultTimesStatisticByAddressCode(Long code);

    /**
     * 根据地区统计故障设备数
     * @author shd
     * @date 2021/10/27 8:58
     * @param code
     * @return java.lang.Long
     */
    Integer selectElevatorFaultDeviceCountStatisticByAddressCode(Long code);

    /**
     * 根据地区统计故障天数
     * @author shd
     * @date 2021/10/27 8:58
     * @param code
     * @return java.lang.Long
     */
    List<Long> selectElevatorFaultDayStatisticByAddressCode(Long code);
}
